{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**问题：**\n",
    "假设你正在为一个电影推荐系统设计一个简单的KNN算法。我们有以下一些用户的电影评分数据，数据由两个特征组成：用户对电影A和电影B的评分，分别在1-5之间。用户的标签（电影类型偏好）是动作片（标签0）或者是喜剧片（标签1）。我们有一个新用户，他给电影A评分为3，电影B评分为4。请问这个用户可能偏好哪种类型的电影？\n",
    "\n",
    "**数据：**\n",
    "\n",
    "| 用户   | 电影A评分 | 电影B评分 | 偏好类型 |\n",
    "| ------ | --------- | --------- | -------- |\n",
    "| 用户1  | 5         | 1         | 动作片   |\n",
    "| 用户2  | 4         | 2         | 动作片   |\n",
    "| 用户3  | 2         | 5         | 喜剧片   |\n",
    "| 用户4  | 1         | 4         | 喜剧片   |\n",
    "| 用户5  | 3         | 2         | 动作片   |\n",
    "| 用户6  | 2         | 5         | 喜剧片   |\n",
    "\n",
    "你需要做以下步骤：\n",
    "1. 构造数据\n",
    "2. 创建KNN模型\n",
    "3. 使用数据训练模型\n",
    "4. 预测新用户的喜好"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 0. 引入核心包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.neighbors import KNeighborsClassifier"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1. X, y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = np.array([\n",
    "    [5, 1],\n",
    "    [4, 2],\n",
    "    [2, 5],\n",
    "    [1, 4],\n",
    "    [3, 2],\n",
    "    [2, 5]\n",
    "])\n",
    "\n",
    "Y = np.array([0, 0, 1, 1, 0, 1]) # 0表示动作片，1表示喜剧片"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 2. 创建 KNN 模型\n",
    "k = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=3)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 3. 训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier(n_neighbors=3)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier(n_neighbors=3)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=3)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn.fit(X,Y)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 4. 用模型推理(预测)用户的喜好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_user = np.array([[3, 4]])\n",
    "prediction = knn.predict(new_user)\n",
    "predicted_preference = '动作片' if prediction[0] == 0 else '喜剧片'"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5. 数据可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAB0QAAAVhCAYAAAAUcT0TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACcRUlEQVR4nOzdd3hUZcKG8XtSCCV06USwASogTURAAQVRlGZBAQUEOyrYF8VewI6uqyAW3FVERUVXsSCCgijS4mIXEQEBOyUCISTz/TEfg5FiAsmcZHL/rivXznnnzDnPvJndbPLwnhMKh8NhJEmSJEmSJEmSJCkOJQQdQJIkSZIkSZIkSZIKi4WoJEmSJEmSJEmSpLhlISpJkiRJkiRJkiQpblmISpIkSZIkSZIkSYpbFqKSJEmSJEmSJEmS4paFqCRJkiRJkiRJkqS4ZSEqSZIkSZIkSZIkKW5ZiEqSJEmSJEmSJEmKWxaikiRJkiRJkiRJkuKWhagkSfn0zTffkJCQwOzZs2N63oyMDJKSkvj3v/8d0/NKkiRJkiRJUnFmISpJUj6dccYZNGjQgPbt2wPw/PPPU69ePZKSkgiFQqSkpHDyySfn+7gdO3YkFArl+kpJSYk+n5qaSu/evRk+fHhBvRVJkiRJkiRJinsWopIk5cMvv/zCwoULufLKK6Njb7zxBpUrV+bee+9lxowZDB48mJdffpnTTjst38dPSUnhk08+iX7973//y/X8XXfdxe+//84rr7yy1+9FkiRJkiRJkkoCC1FJkvJh1KhRhEIhzjnnnOjYk08+SXp6OsOGDaNjx4488sgjNG7cmHfeeSffxw+FQjRt2jT61bBhw1zP77ffflSqVIl77rlnr99LSbBs2bLoatvdGTRoEKFQiJtuuik2wQrAtsyhUIjzzz9/l/tlZmZSpUqV6L4zZ86MXcj/ty1rYZ575syZO6ywTkpKombNmvTs2ZMZM2YU2rn/LDs7mxtuuIEDDjiAUqVKEQqFGDRoUEzOLUmSJEmSpJ2zEJUkKR+mT59O1apV/3a/jIwMypUrl+/jb968mcTERJKTk6lfvz4ffvjhDvs0bNiQxYsX5/vYil8vvPACW7Zs2elzr7/+Or///nuMEwWnRo0aDBw4kIEDB3LqqadSqVIlXn31VY499lgeeeSRQj//Aw88wK233srmzZs5+eSTGThwYPTy2pIkSZIkSQpGUtABJEkqTn788UcqV668233GjRvHsmXLuOOOO/J17GOOOYYWLVrQtm1bvvrqK0aPHs1RRx3F8uXLqV27dnS/OnXqsGDBgj3Kr/jTvHlzFi1axNSpU+nVq9cOzz/99NMkJibSuHFjPvnkk9gHJLKy+h//+Af77rtvoZ+rUaNGTJgwIbodDoe55ZZbuOmmm7jiiis45ZRTqF69eqGdf8qUKQDMmjWL/fffv9DOI0mSJEmSpLxzhagkSfmQlZVFSkrKLp9/+eWXufDCCzn22GMZMWJEvo59ww03cN9993Hqqady3XXX8emnn5Kdnc21116ba79y5cqRnZ29R/kVf/r27UtCQgLPPPPMDs+tXbuWqVOncuyxx1KzZs0A0kXUqlWLRo0aUbZs2ZifOxQKcf3113PAAQewadMm3n777UI938qVKwEsQyVJkiRJkooQC1FJkvIhNTWVDRs27PS5V199lVNOOYUjjzxyj+4f+lf16tWjbNmyfPXVV7nGf/75Z0qVKrXXx9ffy8jIYNSoURx22GFUrFiR1NRUDjjgAE477TTeeuutHfbfuHEjo0aNonnz5qSmppKamkqbNm146qmndnr8UChE/fr12bJlC7fccguNGjUiJSVlpys9d6VWrVocc8wxvPbaa6xbty7Xc88//zyZmZmceeaZuz3GihUrOP/886lXrx4pKSlUr16dk08+mXnz5uXab+HChYRCIY444ohdHuuf//wnoVCIyy+/PDq2u3uI5nfO9kRCQgKHHXYYEHmvsP2eo4MGDWLNmjWcc8451K1bl6SkJMaMGRN97YoVK7j44os54IADKF26NFWqVOGkk05izpw5uc6x7T1+9913ALnuZbps2bI9fr95+Yzs6TGzs7O58847adCgASkpKaSlpXHNNdeQmZm509f98ccf3HnnnbRq1YoKFSpQrlw5GjVqxNChQ/n666932H/u3Lmcdtpp1KpVi1KlSlG3bl3OOeccli9fvtPjS5IkSZIkFRYvmStJUj40btyY6dOn7zD+yiuv0Lt3b1q1asUHH3xQIOdas2YNmzZtynW5XICvvvpqhzEVvOzsbDp37szcuXPZZ5996NixI6VLl2blypVMnTqVcuXK0bVr1+j+P/30E126dOF///sfNWvWpEOHDoTDYebMmcOgQYOYP38+//znP3c4T05ODr169eL999+nQ4cONG3aNE/3qf2z/v3788477/Diiy8yePDg6PgzzzxD2bJl6d27905XkAIsXryYY445hl9++YWGDRty8skns3z5cl5++WX++9//MnHiRE477TQAWrRoQaNGjfj444/59ttvOeCAA3Y43rbz/F0JC3s+Z3ti2z9k+OsK759//pnDDz+crVu30r59ezZv3hxdyfrhhx9y4okn8vvvv9OwYUNOPPFEfv75Z9566y3efPNNnnnmGU4//XSA6H1CJ0+ezB9//MHAgQOj50hNTd2r97u7z8jezGG/fv2YOnUqHTt2pGHDhsyaNYu77rqLH374gaeffjrXvqtXr6ZLly589tlnVK5cmY4dO5KSksLSpUsZO3YsBx10EA0aNIju//DDD3PJJZcAcPjhh3PUUUfx1Vdf8fjjj/Pqq6/y3nvvcfDBB+fxuydJkiRJkrSXwpIkKc8mT54cBsJLly6Njr300kvhUCgU3m+//cKffPJJ9Ovzzz/P17FbtmwZHjNmTHjWrFnhsWPHhqtUqRIOhUI7HCcxMTF8/vnnF8j7iXffffddGAj/3f/lGThwYBgI33jjjdGxd999NwyEDz/88PCmTZty7b9u3brw/Pnzc41169YtDISHDRsW3rx5c3R8zZo14VatWoWB8BtvvJHrNduyHXjggeGVK1fm671ty/yf//wnvH79+nCZMmXCnTp1ij7//fffh0OhULhv377hcDgc7tq1axgIz5gxI7pPTk5OuEmTJmEgfPXVV4dzcnKiz02ePDmckJAQTk1NDa9atSo6fuutt4aB8C233LJDpiVLloSBcKNGjXaa9c/nDof3bM52ZcaMGWEg3KFDhx2e+/HHH8MVKlQIA+Fp06bl2h8I9+7de6ff41q1aoUTExPDTz/9dK7n5s2bF65cuXI4NTU1/NNPP+V6rl69erv8vBXGZ2RvjnnwwQeHV69eHR1funRpuFKlSmEgvGTJklyvOfbYY8NAuE+fPuENGzbkeu67774Lf/LJJ9HtDz/8MJyYmBiuU6fODv89eeyxx8JA+IgjjtjpHEmSJEmSJBUGL5krSVI+nHLKKZQrV46RI0dGxx544AHC4TDfffcdhx12WPSrSZMm0X1mz55NKBTKdSnOv/rpp5+4/PLLOeqoo7jooosoV64c77zzTq5VVI8++ig5OTnccccdhfL+tN3PP/8M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SpDZs2fz+OOPk56evtv9ateuzYoVK8jJySEhId+3QJUkSZKkwhMKwcUX5x575x1IT4fLL4c4+B1md78X9u3bl1deeYVNmzbRvXt3HnvssXwde9KkSSxcuJB58+btdr/atWvz/fff5+vYkiRJkqSSK1+/jW/atInSpUsXeIgNGzZw1llnMX78ePbZZ5/d7lumTBlycnLIzMws8BySJEmSVKB++w3694erroIePeDXX4NOtNc2b968y98L77//fhYuXMgrr7zCt99+y+WXX57n465cuZJhw4bxzDPP/O3vnWXKlGHjxo35yi1JkiRJKrnytUJ0n3324ffffy/wEN9++y3Lli2je/fu0bGcnBwAkpKS+OqrrzjggAMA+O233yhXrhxlypQp8BySJEmSVKAqV4ZbboFhw+D116FZM5g0Cdq1CzrZHqtateoufy+sWbMmNWvWpFGjRlSpUoWjjjqK66+/nlq1av3tcdPT0/npp59o0aJFdCw7O5v333+fhx56iMzMTBITE4HI74XVqlUrmDckSZIkSYp7+Voh2rx5cz7//PMCD9GoUSMWL15Menp69KtHjx506tSJ9PR00tLSovt++umnNG/evMAzSJIkSVKBC4Xg/PNh7lxo0ABWroQOHWD0aPj/fwRa3DRr1ixPvxdu+0eueb26T4cOHXb4vbBVq1b079+f9PT0aBkK/l4oSZIkScqffK0Q7dq1KyNGjOD333+ncuXK0fElS5aQkZHBmjVr2LRpU/Q+oIcccgilSpX62+OWLl2axo0b5xqrVKkSwA7js2bN4rjjjstPbEmSJEkK1mGHwfz5cOGF8MwzMGIEzJwJU6ZAIdyWpDB16dKFkSNH5vq9cOrUqfz4448cfvjhpKam8tlnn3HVVVfRrl076tevn6fjli9fnjp16uQaK1euHFWrVt3p74W33nprgbwfSZIkSVL8y9cK0SZNmtCiRQuef/75XOPnnHMOzZs3Z9y4cXz99dc0b96c5s2bs2rVqug+oVCICRMm7FXYH374gTlz5nD22Wfv1XEkSZIkKebKl4f//AceeyxSglavDikpQafKt539XlimTBnGjx9P+/btOfjgg7nsssvo0aMHr732WnSfZcuWEQqFmDlz5l6d/8MPP2TdunWceuqpe3UcSZIkSVLJka8VogA33HADV111Feeeey4JCZE+9e9+of3uu+9ISkqiXT7uk7Oz8vTBBx9k0KBB1K1bNz+RJUmSJKloCIVgyBBo0wbq1YtsA2zYAGXLwp8uC1uU/fX3wk6dOjFnzpzdvua7776jUqVKHHbYYXk+z85+1xwzZgxXXXUVZcqUyW9sSZIkSVIJle9C9MQTT+Sbb77hhx9+yHVvz92ZOnUq5513HgcddFC+A/5Z9erVufzyy/fqGJIkSZIUuEMP3f44Jwf69oXNm+Hpp6FmzeBy5dGe/l547bXX5rr9Sn5t2bKFJk2acNlll+3xMSRJkiRJJU++C1GA4cOH52v/oUOH7slpdnDFFVcUyHEkSZIkqcj44guYMQM2boRmzSL3GD322KBT/a38/l5499137/U5S5UqxciRI/f6OJIkSZKkkiVf9xCVJEmSJBWwQw+FBQugcWP48Ufo0gVuuAGys4NOJkmSJElSXLAQlSRJkqSgNWoEH38M554L4TDcemtkleiqVUEnkyRJkiSp2LMQlSRJkqSioEwZePRRmDgRUlPhvfegd+9IQSpJkiRJkvaYhagkSZIkFSV9+0Yuodu6NfzznxAKBZ1IkiRJkqRiLSnoAJIkSZKkv2jQAD76KHcZ+sor0KIFpKUFl0uSJEmSpGLIFaKSJEmSVBT9uQxNT4fTT4dmzeC114JKJEmSJElSsWQhKkmSJElFXYUK0KQJ/PYbdO8OV14JW7YEnUqSJEmSpGLBQlSSJEmSirr994fZs2HYsMj2vffC0UfDsmWBxpIkSZIkqTiwEJUkSZKk4iAlBcaMgZdfhkqVYO5caN4cpkwJOJgkSZIkSUWbhagkSZIkFSe9esGiRXDEEbB2LXz6adCJJEmSJEkq0pKCDiBJkiRJyqf69eH99+GJJ+Dcc7ePh8MQCgUWS5IkSZKkosgVopIkSZJUHJUqBRdcAImJke1Nm6BDB3jhhWBzSZIkSZJUxFiISpIkSVI8+Ne/YNYs6NMHLroINm8OOpEkSZIkSUWChagkSZIkxYPhw2HEiMjjRx6BNm3g668DjSRJkiRJUlFgISpJkiRJ8SApCe64A958E6pVg08+gZYtYeLEoJNJkiRJkhQoC1FJkiRJiiddu0J6OnTsCBkZ0L8/3Htv0KkkSZIkSQqMhagkSZIkxZvateGdd+CGGyKrRfv0CTqRJEmSJEmBsRCVJEmSpHiUmAg33xy5j2ha2vbx+fODyyRJkiRJUgAsRCVJkiQpnlWqtP3xf/8Lhx8OgwbBH38ElUiSJEmSpJiyEJUkSZKkkuLbbyEhAZ56KlKMfvpp0IkkSZIkSSp0FqKSJEmSVFIMHw7vvhu5x+gXX0RK0ccfh3A46GSSJEmSJBUaC1FJkiRJKkk6dID0dDj+eNi8Gc45B846CzZsCDqZJEmSJEmFwkJUkiRJkkqaatXg9ddh9GhITIRnnomsHJUkSZIkKQ4lBR1AkiRJkhSAhAS45ho46ih46y3o2TPoRJIkSZIkFQpXiEqSJElSSda2Ldx88/btNWvgggtg3brgMkmSJEmSVIAsRCVJkiRJ2w0eDOPGQcuWsGBB0GkkSZIkSdprFqKSpEI3evRoQqEQw4cP3+1+L7zwAo0aNaJ06dI0adKEqVOnxiagJEna7sYboV49+PbbyOrRf/4TwuGgU0mSJEmStMcsRCVJhWrevHmMGzeOpk2b7na/OXPm0LdvX4YMGcKiRYvo1asXvXr14tNPP41RUkmSBMARR8CiRdC7N2zZApdeCqecAqtWRZ7fuDHYfJIkSZIk5ZOFqCSp0GRkZNC/f3/Gjx9P5cqVd7vvAw88wPHHH89VV13FwQcfzK233kqLFi146KGHYpRWkiRFVa4ML74IDz4IpUrByy+TdNBBpK5cGVk1+uCDQSeUJEmSJCnPkoIOIEmKX0OHDuXEE0+kc+fO3Hbbbbvd98MPP+Tyyy/PNda1a1emTJmyy9dkZmaSmZkZ3V6/fj0AWVlZZGVl7Xnwndh2vII+rnJznmPDeY4N5zl2nOtCdMEF0LQpSV26EM7OZlPVqmStWRO5x+jAgVC27F6fwu+bJEmSJKmwWYhKkgrFpEmTWLhwIfPmzcvT/mvWrKFGjRq5xmrUqMGaNWt2+ZpRo0Zx88037zD+9ttvU7YA/kC7M9OmTSuU4yo35zk2nOfYcJ5jx7kuPEkTJpCyfj3ZZcow7YknIoMzZxbIsTd6CV5JkiRJUiGzEJUkFbgVK1YwbNgwpk2bRunSpQvtPCNGjMi1qnT9+vWkpaVx3HHHUaFChQI9V1ZWFtOmTaNLly4kJycX6LG1nfMcG85zbDjPseNcF7KNG6FtW7LWrGHaE0/QZfBgkmvWhDlzCmSF6LYrPEiSJEmSVFgsRCVJBW7BggX89NNPtGjRIjqWnZ3N+++/z0MPPURmZiaJiYm5XlOzZk1+/PHHXGM//vgjNWvW3OV5UlJSSElJ2WE8OTm50P4gXpjH1nbOc2w4z7HhPMeOc11IKlaE88+PXCYXSK5Zk+Tzz4+MFwC/Z5IkSZKkwpYQdABJUvw59thjWbx4Menp6dGvVq1a0b9/f9LT03coQwGOPPJIpk+fnmts2rRpHHnkkbGKLUmSduXSSyMrQiHyn5deGmweSZIkSZLywRWikqQCV758eRo3bpxrrFy5clStWjU6PmDAAOrUqcOoUaMAGDZsGB06dODee+/lxBNPZNKkScyfP59HH3005vklSdJObLs8biHdp1uSJEmSpMLiClFJUiCWL1/O6tWro9tt27Zl4sSJPProoxx22GFMnjyZKVOm7FCsSpIkSZIkSZKUH64QlSTFxMyZM3e7DXDaaadx2mmnxSaQJEmSJEmSJKlEcIWoJEmSJEmSJEmSpLhlISpJkiRJkiRJkiQpblmISpIkSZIkSZIkSYpbFqKSJEmSJEmSJEmS4paFqCRJkiRJkiRJkqS4ZSEqSZIkSZIkSZIkKW5ZiEqSJEmSJEmSJEmKWxaikiRJkiRJkiRJkuJWUtABJEkqKOFwGID169cX+LGzsrLYuHEj69evJzk5ucCPrwjnOTac59hwnmPHuY6NwprnbT+3t/0clyRJkiSpoFmISpLixoYNGwBIS0sLOIkkScqvDRs2ULFixaBjSJIkSZLiUCjsP8OVJMWJnJwcVq1aRfny5QmFQgV67PXr15OWlsaKFSuoUKFCgR5b2znPseE8x4bzHDvOdWwU1jyHw2E2bNhA7dq1SUjwri6SJEmSpILnClFJUtxISEigbt26hXqOChUq+Mf2GHCeY8N5jg3nOXac69gojHl2ZagkSZIkqTD5z28lSZIkSZIkSZIkxS0LUUmSJEmSJEmSJElxy0JUkqQ8SElJ4cYbbyQlJSXoKHHNeY4N5zk2nOfYca5jw3mWJEmSJBVXoXA4HA46hCRJkiRJkiRJkiQVBleISpIkSZIkSZIkSYpbFqKSJEmSJEmSJEmS4paFqCRJkiRJkiRJkqS4ZSEqSZIkSZIkSZIkKW5ZiEqSJEmSJEmSJEmKWxaikqQSb9SoURx++OGUL1+e6tWr06tXL7766qu/fd0LL7xAo0aNKF26NE2aNGHq1KkxSFt87ck8jx8/nqOOOorKlStTuXJlOnfuzMcffxyjxMXTnn6et5k0aRKhUIhevXoVXsg4sKfzvHbtWoYOHUqtWrVISUmhQYMG/m/H39jTuR4zZgwNGzakTJkypKWlcdlll7F58+YYJC6eHnnkEZo2bUqFChWoUKECRx55JG+88cZuX+PPQUmSJElScWEhKkkq8d577z2GDh3KRx99xLRp08jKyuK4447jjz/+2OVr5syZQ9++fRkyZAiLFi2iV69e9OrVi08//TSGyYuXPZnnmTNn0rdvX2bMmMGHH35IWloaxx13HD/88EMMkxcvezLP2yxbtowrr7ySo446KgZJi7c9mectW7bQpUsXli1bxuTJk/nqq68YP348derUiWHy4mdP5nrixIn84x//4MYbb+SLL77g8ccf57nnnuPaa6+NYfLipW7duowePZoFCxYwf/58jjnmGHr27Mlnn3220/39OShJkiRJKk5C4XA4HHQISZKKkp9//pnq1avz3nvvcfTRR+90n9NPP50//viD1157LTrWpk0bmjVrxtixY2MVtVjLyzz/VXZ2NpUrV+ahhx5iwIABhZwwPuR1nrOzszn66KMZPHgws2bNYu3atUyZMiV2QYu5vMzz2LFjufvuu/nyyy9JTk6OccL4kZe5vvjii/niiy+YPn16dOyKK65g7ty5zJ49O1ZRi70qVapw9913M2TIkB2e8+egJEmSJKk4cYWoJEl/sW7dOiDyh+Bd+fDDD+ncuXOusa5du/Lhhx8WarZ4kpd5/quNGzeSlZWVr9eUdHmd51tuuYXq1avvtPjQ38vLPL/66qsceeSRDB06lBo1atC4cWPuuOMOsrOzYxUzLuRlrtu2bcuCBQuil9heunQpU6dOpVu3bjHJWNxlZ2czadIk/vjjD4488sid7uPPQUmSJElScZIUdABJkoqSnJwchg8fTrt27WjcuPEu91uzZg01atTINVajRg3WrFlT2BHjQl7n+a+uueYaateuvcMf4bVzeZ3n2bNn8/jjj5Oenh67cHEkr/O8dOlS3n33Xfr378/UqVNZsmQJF110EVlZWdx4440xTFx85XWu+/Xrxy+//EL79u0Jh8Ns3bqVCy64wEvm/o3Fixdz5JFHsnnzZlJTU3n55Zc55JBDdrqvPwclSZIkScWJhagkSX8ydOhQPv30Uy+pWMj2ZJ5Hjx7NpEmTmDlzJqVLly7EdPEjL/O8YcMGzjrrLMaPH88+++wTw3TxI6+f55ycHKpXr86jjz5KYmIiLVu25IcffuDuu++2EM2jvM71zJkzueOOO3j44Yc54ogjWLJkCcOGDePWW2/l+uuvj1Ha4qdhw4akp6ezbt06Jk+ezMCBA3nvvfd2WYpKkiRJklRcWIhKkvT/Lr74Yl577TXef/996tatu9t9a9asyY8//phr7Mcff6RmzZqFGTEu5Geet7nnnnsYPXo077zzDk2bNi3khPEhr/P87bffsmzZMrp37x4dy8nJASApKYmvvvqKAw44oNDzFlf5+TzXqlWL5ORkEhMTo2MHH3wwa9asYcuWLZQqVaqw4xZr+Znr66+/nrPOOotzzjkHgCZNmvDHH39w3nnncd1115GQ4J1DdqZUqVIceOCBALRs2ZJ58+bxwAMPMG7cuB329eegJEmSJKk48S8BkqQSLxwOc/HFF/Pyyy/z7rvvst9++/3ta4488kimT5+ea2zatGm7vNea9myeAe666y5uvfVW3nzzTVq1alXIKYu//M5zo0aNWLx4Menp6dGvHj160KlTJ9LT00lLS4tR8uJlTz7P7dq1Y8mSJdHCGeDrr7+mVq1alqG7sSdzvXHjxh1Kz21FdDgcLpSc8SgnJ4fMzMydPufPQUmSJElSceIKUUlSiTd06FAmTpzIK6+8Qvny5aP3P6tYsSJlypQBYMCAAdSpU4dRo0YBMGzYMDp06MC9997LiSeeyKRJk5g/fz6PPvpoYO+jqNuTeb7zzju54YYbmDhxIvXr14++JjU1ldTU1GDeSBGX33kuXbr0DvdirFSpEkC+7u9a0uzJ5/nCCy/koYceYtiwYVxyySV888033HHHHVx66aWBvY/iYE/munv37tx33300b948esnc66+/nu7du+daoavtRowYwQknnMC+++7Lhg0bmDhxIjNnzuStt94C/DkoSZIkSSreLEQlSSXeI488AkDHjh1zjT/55JMMGjQIgOXLl+dabdS2bVsmTpzIyJEjufbaaznooIOYMmWKBdJu7Mk8P/LII2zZsoVTTz0112tuvPFGbrrppsKMW2ztyTwr//ZkntPS0njrrbe47LLLaNq0KXXq1GHYsGFcc801sYpdLO3JXI8cOZJQKMTIkSP54YcfqFatGt27d+f222+PVexi56effmLAgAGsXr2aihUr0rRpU9566y26dOkC+HNQkiRJklS8hcJeM0qSJEmSJEmSJElSnHJpgCRJkiRJkiRJkqS4ZSEqSZIkSZIkSZIkKW5ZiEqSJEmSJEmSJEmKWxaikiRJkiRJkiRJkuKWhagkSZIkSZIkSZKkuGUhKkmSJEmSJEmSJCluWYhKkiRJkiRJkiRJilsWopIkSZIkSZIkSZLiloWoJEmSCkUoFGLKlClBx9hrN910E82aNQs6hiRJkiRJkvaQhagkSVIJMGjQIEKhEBdccMEOzw0dOpRQKMSgQYMK9JyrV6/mhBNOKJBjde3alcTERObNm1cgx9uVnZW4V155JdOnTy/U80qSJEmSJKnwWIhKkiSVEGlpaUyaNIlNmzZFxzZv3szEiRPZd999C/x8NWvWJCUlZa+Ps3z5cubMmcPFF1/ME088ke/XZ2dnk5OTs8fnT01NpWrVqnv8ekmSJEmSJAXLQlSSJKmEaNGiBWlpabz00kvRsZdeeol9992X5s2b59o3MzOTSy+9lOrVq1O6dGnat28fXZ2Zk5ND3bp1eeSRR3K9ZtGiRSQkJPD9998DO662XLFiBX369KFSpUpUqVKFnj17smzZsr/N/eSTT3LSSSdx4YUX8uyzz+YqdHdmwoQJVKpUiVdffZVDDjmElJQUli9fzrx58+jSpQv77LMPFStWpEOHDixcuDD6uvr16wPQu3dvQqFQdPuvl8wdNGgQvXr14p577qFWrVpUrVqVoUOHkpWVFd1n9erVnHjiiZQpU4b99tuPiRMnUr9+fcaMGfO371eSJEmSJEkFy0JUkiSpBBk8eDBPPvlkdPuJJ57g7LPP3mG/q6++mhdffJGnnnqKhQsXcuCBB9K1a1d+++03EhIS6Nu3LxMnTsz1mmeeeYZ27dpRr169HY6XlZVF165dKV++PLNmzeKDDz4gNTWV448/ni1btuwybzgc5sknn+TMM8+kUaNGHHjggUyePPlv3+fGjRu58847eeyxx/jss8+oXr06GzZsYODAgcyePZuPPvqIgw46iG7durFhwwbg/9q7+1it6/qP4++jIByU2+CEBIZTp6hkHAeSNlNpKVLeNzM0Nxk2b2LpJJV1s+msNuZa7WcsFaEbGZZmLkVNk6PImpk3rBNmAoKKJIknC/EG5fz+cJ2FHPQchJgvH4/t2ri+38/1+X6uvz7befL9XtURfOfMmVNr1qx518fzLly4sJYvX14LFy6sn/70pzV37tyaO3dux/mvfOUr9fzzz1dLS0vdcsstde2119batWvfc90AAAAAbH+CKADAh8iZZ55ZDz74YK1atapWrVpVixcvrjPPPHOzMa+88krNmjWrZs6cWRMnTqwDDzywrrvuumpsbKzZs2dXVdXkyZNr8eLF9cwzz1TV23eNzp8/vyZPntzpdW+66abatGlTXX/99TV69OgaNWpUzZkzp5555plqaWnZ6nrvvffe2rBhQx177LEd6//PGt7Nxo0b68c//nEdfvjhtf/++1efPn3qmGOO6Qiro0aNqmuvvbY2bNhQ999/f1VVDRkypKqqBgwYUEOHDu1435mBAwfW//3f/9UBBxxQn//852vSpEkdvzP617/+te6999667rrr6rDDDqvm5ua6/vrr3/POVgAAAAB2DEEUAOBDZMiQITVp0qSaO3duzZkzpyZNmlSDBw/ebMzy5ctr48aNdcQRR3Qc69mzZ40bN66eeOKJqqr65Cc/WaNGjeq4S/T++++vtWvX1he/+MVOr7tkyZJatmxZ9e3bt/bYY4/aY489atCgQfXaa6/V8uXLt7reG264oU4//fTq0aNHVVWdccYZtXjx4nf9TFXVbrvtVp/4xCc2O/bCCy/U1KlTa7/99qv+/ftXv379av369R1RtzsOOuig2nXXXTve77nnnh13gD755JPVo0ePam5u7ji/77771sCBA7t9HQAAAADevx47ewEAAPxvnXPOOXXhhRdWVdU111yzzfNMnjy55s2bV5dddlnNmzevjjvuuPrIRz7S6dj169fXoYceWjfeeOMW57Z2J+ZLL71Ut956a23cuHGz3yt966236oYbbqirrrpqq2trbGyshoaGzY6dffbZtW7duvrhD39YH//4x6tXr171qU996l0f2bs1PXv23Ox9Q0NDbdq0qdvzAAAAALDjuUMUAOBD5j+/2/mf3/V8p3322ad22223Wrx4ccexjRs31sMPP1wHHnhgx7Evf/nL1draWo888kjdfPPNW31cblVVc3NzPfXUU9XU1FT77rvvZq/+/ft3+pkbb7yxhg8fXkuWLKnHH3+843X11VfX3Llz66233urW9168eHFNmzatjj/++DrooIOqV69e9eKLL242pmfPnt2e953233//evPNN+uxxx7rOLZs2bJqa2t7X/MCAAAAsG0EUQCAD5ldd921nnjiiVq6dOlmj339j913373OO++8mj59et111121dOnSmjp1am3YsKGmTJnSMW7kyJF1+OGH15QpU+qtt96qE044YavXnDx5cg0ePLhOPPHEWrRoUT399NPV0tJS06ZNq+eee67Tz8yePbtOO+20Ovjggzd7TZkypV588cW66667uvW999tvv/r5z39eTzzxRD300EM1efLkamxs3GzMyJEj6/e//339/e9/3+aAecABB9RnP/vZOvfcc+uPf/xjPfbYY3Xuued2etcqAAAAADueIAoA8CHUr1+/6tev31bPf//7369TTz21zjrrrGpubq5ly5bV3XffvcXvYE6ePLmWLFlSJ5988hZx8b/16dOnHnjggdprr73qlFNOqVGjRtWUKVPqtdde63QdjzzySC1ZsqROPfXULc7179+/JkyYULNnz+7GN347sLa1tVVzc3OdddZZNW3atGpqatpszNVXX1333HNPjRgxosaMGdOt+f/bz372s/roRz9aRx55ZJ188sk1derU6tu3b/Xu3Xub5wQAAABg2zS0t7e37+xFAABAsueee65GjBhR9957b02YMGFnLwcAAADgQ0UQBQCA7ey+++6r9evX1+jRo2vNmjX1jW98o1avXl1/+9vfqmfPnjt7eQAAAAAfKj129gIAACDNxo0ba8aMGbVixYrq27dvHX744XXjjTeKoQAAAAA7gTtEAQAAAAAAgFi77OwFAAAAAAAAAOwogigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAALpl3bp11dTUVCtXrvyfXveNN96okSNH1p/+9Kf/6XUB4J3shQDwwSKIAgAA0C1XXXVVnXjiiTVy5MiqevuPwscdd1wNGzasevXqVSNGjKgLL7yw/vWvf3Vr3u9973s1duzY6tu3bzU1NdVJJ51UTz75ZMf53XbbrS655JK69NJLt+fXAYBue+de+N/WrVtXw4cPr4aGhvrnP//ZrXnthQCwYzS0t7e37+xFAAAA8MGwYcOG2nPPPevuu++u8ePHV1VVW1tbzZ8/v8aOHVtDhgypZcuW1QUXXFDNzc01b968Ls993HHH1Ze+9KUaO3ZsvfnmmzVjxoxqbW2tpUuX1u67795xraFDh9ajjz5aBx100A75jgDwbjrbC//bSSedVG+88Ubdeeed1dbWVgMGDOjy3PZCANgxBFEAAAC67Oabb67zzz+/1q5d+67jfvSjH9XMmTPr2Wef3eZr/eMf/6impqa6//7768gjj+w4fswxx9QRRxxRV1555TbPDQDb6t32wlmzZtVNN91U3/72t2vChAndDqLvZC8EgO2jx85eAAAAAB8cixYtqkMPPfRdxzz//PP161//uj7zmc+8r2u9/PLLVVU1aNCgzY6PGzeuFi1a9L7mBoBttbW9cOnSpXXFFVfUQw89VCtWrNgu17IXAsD24TdEAQAA6LJVq1bVsGHDOj13xhlnVJ8+fepjH/tY9evXr66//vptvs6mTZvq61//eh1xxBF18MEHb3Zu2LBhtWrVqm2eGwDej872wtdff73OOOOMmjlzZu21117b5Tr2QgDYfgRRAAAAuuzVV1+t3r17d3ruBz/4QT366KN122231fLly+viiy/e5utccMEF1draWvPnz9/iXGNjY23YsGGb5waA96OzvfDyyy+vUaNG1ZlnnrndrmMvBIDtRxAFAACgywYPHlxtbW2dnhs6dGgdcMABdcIJJ9RPfvKTmjVrVq1Zs6bb17jwwgvr9ttvr4ULF9bw4cO3OP/SSy/VkCFDuj0vAGwPne2F9913X/3qV7+qHj16VI8ePWrChAkdY7/zne90+xr2QgDYvvyGKAAAAF02ZsyY+sUvfvGe4zZt2lRVbz9CsKva29vra1/7Wt16663V0tJSe++9d6fjWltba8yYMV2eFwC2p872wltuuaVeffXVjvcPP/xwnXPOObVo0aLaZ599ujy3vRAAdoyG9vb29p29CAAAAD4Y/vznP1dzc3OtXbu2Bg4cWFVVCxYsqBdeeKHGjh1be+yxR/3lL3+p6dOn16BBg+rBBx/s8tznn39+zZs3r2677bbaf//9O47379+/GhsbO96PHDmyrrzyyjrrrLO23xcDgC7qbC98p5aWljr66KOrra2tBgwY0OW57YUAsGN4ZC4AAABdNnr06Gpubq5f/vKXHccaGxvruuuuq09/+tM1atSouuiii+qEE06o22+/vWPMypUrq6GhoVpaWrY696xZs+rll1+uo446qvbcc8+O10033dQx5g9/+EO9/PLLddppp+2Q7wcA76WzvbAr7IUAsPO4QxQAAIBuueOOO2r69OnV2tpau+zStf9nu3DhwjrllFNqxYoVW72bpitOP/30OuSQQ2rGjBnbPAcAvF/2QgD4YPEbogAAAHTLpEmT6qmnnqrVq1fXiBEjuvSZBQsW1IwZM97XH4DfeOONGj16dF100UXbPAcAbA/2QgD4YHGHKAAAAAAAABDLb4gCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAxBJEAQAAAAAAgFiCKAAAAAAAABBLEAUAAAAAAABiCaIAAAAAAABALEEUAAAAAAAAiCWIAgAAAAAAALEEUQAAAAAAACCWIAoAAAAAAADEEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMQSRAEAAAAAAIBYgigAAAAAAAAQSxAFAAAAAAAAYgmiAAAAAAAAQCxBFAAAAAAAAIgliAIAAAAAAACxBFEAAAAAAAAgliAKAAAAAAAAdNm6deuqqampVq5c+T+/9vjx4+uWW27p1mcEUQAAAAAAAKDLrrrqqjrxxBNr5MiRHccaGhq2eM2fP79b8z7wwAP1hS98oYYNG1YNDQ31m9/8Zosx3/zmN+uyyy6rTZs2dXleQRQAAAAAAADokg0bNtTs2bNrypQpW5ybM2dOrVmzpuN10kkndWvuV155pQ455JC65pprtjpm4sSJ9e9//7vuvPPOLs/bo1urAAAAAAAAAD60FixYUL169arx48dvcW7AgAE1dOjQbZ574sSJNXHixHcds+uuu9bxxx9f8+fPr0mTJnVpXneIAgAAAAAAAF2yaNGiOvTQQzs9d8EFF9TgwYNr3LhxdcMNN1R7e/sOWcO4ceNq0aJFXR7vDlEAAAAAAACgS1atWlXDhg3b4vgVV1xRxxxzTPXp06d+97vf1fnnn1/r16+vadOmbfc1DBs2rJ599tnatGlT7bLLe9//KYgCAAAAAAAAXfLqq69W7969tzj+rW99q+PfY8aMqVdeeaVmzpy5Q4JoY2Njbdq0qV5//fVqbGx8z/EemQsAAAAAAAB0yeDBg6utre09xx122GH13HPP1euvv77d1/DSSy/V7rvv3qUYWiWIAgAAAAAAAF00ZsyYWrp06XuOe/zxx2vgwIHVq1ev7b6G1tbWGjNmTJfHe2QuAAAAAAAA0CXHHntsXX755dXW1lYDBw6sqqrf/va39cILL9T48eOrd+/edc8999R3v/vduuSSS7o19/r162vZsmUd759++ul6/PHHa9CgQbXXXnt1HF+0aFF97nOf6/K8De3t7e3dWgkAAAAAAADwoXXYYYfVOeecU1/96lerququu+6qyy+/vJYtW1bt7e2177771nnnnVdTp06tXXZ5+4G1K1eurL333rsWLlxYRx11VKfztrS01NFHH73F8bPPPrvmzp1bVVWrV6+uvffeu1asWFHDhw/v0noFUQAAAAAAAKDL7rjjjpo+fXq1trZ2BM/3snDhwjrllFNqxYoVHXeWbotLL7202tra6tprr+3yZzwyFwAAAAAAAOiySZMm1VNPPVWrV6+uESNGdOkzCxYsqBkzZryvGFpV1dTUVBdffHG3PuMOUQAAAAAAACBW1+5hBQAAAAAAAPgAEkQBAAAAAACAWIIoAAAAAAAAEEsQBQAAAAAAAGIJogAAAAAAAEAsQRQAAAAAAACIJYgCAAAAAAAAsQRRAAAAAAAAIJYgCgAAAAAAAMT6f4tNkk28U7jpAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"User Movie Preference\", size=15) \n",
    "plt.xlabel(\"Movie A rating\")\n",
    "plt.ylabel(\"Movie B rating\")\n",
    "plt.grid()\n",
    "\n",
    "# 绘制原始样本点，要求不同的影片喜好类别用不同的颜色标记\n",
    "# 提示: 用scatter散点图绘制，用它的参数c实现不同的类别用不同的颜色标记\n",
    "plt.scatter(X[y == 0, 0], X[y == 0, 1], color='blue', label='Action') \n",
    "plt.scatter(X[y == 1, 0], X[y == 1, 1], color='orange', label='Comedy') \n",
    "# 绘制新数据点，用红色x标记，大小为8\n",
    "# 提示：用plt.plot()绘制，用它的参数marker实现不同的标记符号\n",
    "plt.scatter(new_user[0, 0], new_user[0, 1], color='red', marker='x', s=8, label='New User')\n",
    "\n",
    "# 新数据最近邻索引为第一个最近邻的索引\n",
    "dist, idx = knn.kneighbors(new_user)\n",
    "nearest = X[idx[0][0]] # 获取最近邻点的坐标，这是一个列表，第一个元素是x坐标，第二个元素是y坐标\n",
    "\n",
    "# 用红线标记新数据点与最近邻点的连接线\n",
    "# 提示：用plt.plot()绘制，用 r-- 实现红色虚线\n",
    "plt.plot([new_user[0, 0], nearest[0]], [new_user[0, 1], nearest[1]], 'r--')\n",
    "\n",
    "# 为每个点添加坐标文本  \n",
    "for x, y in zip(X[:, 0], X[:, 1]):\n",
    "    plt.text(x, y+0.1, f'({x}, {y})') \n",
    "\n",
    "# 为新数据点添加坐标文本\n",
    "plt.text(new_user[0,0], new_user[0,1]+0.1, f'({new_user[0,0]}, {new_user[0,1]})')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
